Methods and systems for modeling a replication topology

ABSTRACT

Methods and systems for modeling a replication topology involve, for example, representing a plurality of replication components of a replication topology in a first binary matrix using a processor coupled to memory and generating a result matrix based at least in part on the first binary matrix likewise using the processor. Thereafter, also using the processor, replication components of the replication topology may be identified that are either enabled or non-enabled to receive replications from other replication components of the replication topology based at least in part on the result matrix.

FIELD OF THE INVENTION

The present invention relates generally to the field of computermodeling, and more particularly to methods and systems for modeling areplication topology, such as a Lightweight Directory Access Protocol(LDAP) server infrastructure.

BACKGROUND OF THE INVENTION

Typically, an LDAP infrastructure of a global enterprise, such as thesingle sign-on LDAP infrastructure, may be very large. For example, suchan infrastructure may include 30 to 100 servers. Such a globalenterprise may experience serious issues relating to LDAP servertopology from time-to-time. For example, an outage in one LDAP server inthe infrastructure may lead to an outage in another part of theinfrastructure because an update does not reach servers in such otherpart of the infrastructure and such servers therefore become ‘orphaned’.Thus, it is important to know in advance what the impact would be if aserver is removed from the infrastructure.

When the LDAP infrastructure is in the process of being designed, it isvery difficult to determine whether or not a proposed server topology isfully matched in the sense that every server connects to every otherserver in the server topology. Thus, there is currently no suitable wayto determine how well a particular server topology will perform, whetherall the servers in the topology are receiving updates from multiplesources, and what problems may arise with the topology in the event oneor more servers become orphaned. In a small infrastructure, for example,with less than four servers, it is quite easy to manually determine thequality of the server topology. However, as the number of serversincreases, that task becomes increasingly complex.

There is a current need for an accurate model that allows designers todetermine whether or not a proposed server topology will perform well ina production scenario and also provides the enterprise with guidelinesfor when an occasion may arise when it becomes necessary to take downone or more servers in the topology.

SUMMARY OF THE INVENTION

Embodiments of the invention employ computer hardware and software,including, without limitation, one or more processors coupled to memoryand non-transitory computer-readable storage media with one or moreexecutable programs stored thereon which instruct the processors toperform the replication topology modeling described herein. Embodimentsof the invention provide methods and systems for modeling a replicationtopology that may involve, for example, representing, using a processorcoupled to memory, a plurality of replication components of areplication topology in a first binary matrix; generating, using theprocessor, a result matrix based at least in part on the first binarymatrix; and identifying, using the processor, replication components ofthe replication topology that are enabled to receive replications fromother replication components of the replication topology based at leastin part on the result matrix.

In an aspect of embodiments of the invention, representing the pluralityof replication components may involve, for example, representing theplurality of replication components as both supplier components andconsumer components in the first binary matrix. In another aspect,representing the plurality of replication components as both supplierand consumer components may involve, for example, representing theplurality of replication components as supplier components in rows ofthe first binary matrix and as consumer components in columns of thefirst binary matrix. In a further aspect, the first binary matrix maycomprise, for example, a plurality of cells defined by the respectiverows and columns of the first binary matrix, and wherein a cell valueequal to one represents a connection between a supplier component in arow and a consumer component in a column that together define the cell.

In an additional aspect of embodiments of the invention, representingthe plurality of replication components may involve, for example,representing the plurality of replication components of a replicationtopology in the first binary matrix of a size N×N, where N is the numberof replication components in the replication topology. In anotheraspect, the plurality of replication components may comprise, forexample, a plurality of servers of a server infrastructure. In stillanother aspect, the plurality of servers may comprise, for example, aplurality of servers of a Lightweight Directory Access Protocol (LDAP)infrastructure.

In a further aspect of embodiments of the invention, generating theresult matrix may involve, for example, generating the result matrix asa product of the first binary matrix and a one-row binary matrixrepresenting one of the plurality of replication components of thereplication topology as a supplier component. In another aspect,generating the result matrix may involve, for example, generating theresult matrix according to an equation: M_(Result)=M*M_(Row), whereM_(Result) is the result matrix, M is the first binary matrix, andM_(Row) is the one-row matrix representing one of the plurality ofreplication components. In an additional aspect, the result matrix maycomprise, for example, a one-row result matrix.

In a still further aspect of embodiments of the invention, generatingthe result matrix may involve, for example, generating the result matrixas a product of the first binary matrix multiplied by itself. In anotheraspect, generating the result matrix may involve, for example,generating the result matrix according to an equation: M_(Result)=M*M,where M_(Result) is the result matrix and M is the first binary matrix.In an additional aspect, the first binary matrix may comprise, forexample, a binary matrix of size N×N, where N is a number of replicationcomponents in the replication topology, and the result matrix islikewise a matrix of size N×N.

In still another aspect of embodiments of the invention, generating theresult matrix may involve, for example, generating the result matrix bymultiplying the first binary matrix by itself and iterativelymultiplying the first binary matrix by an outcome matrix and by each ofa plurality of succeeding outcome binary matrices for a pre-determinednumber of iterations. In a further aspect, the result matrix maycomprise, for example, a matrix of size N×N, where N is a number ofreplication components in the replication topology. In a still furtheraspect, generating the result matrix may involve, for example,iteratively multiplying the first binary matrix by the outcome matrixand by each of the plurality of succeeding outcome binary matrices for apre-determined number of iterations equal to N minus two iterations.

In an additional aspect of embodiments of the invention, identifyingreplication components of the replication topology that are enabled toreceive replications from other replication components may involve, forexample, identifying cells defined by respective rows of the resultmatrix representing the plurality of replication components as suppliercomponents and columns of the result matrix representing the pluralityof replication components as consumer components having cell valuesequal to one. Another aspect may involve, for example, identifyingreplication components of the replication topology that are non-enabledto receive replications from other replication components as cellsdefined by respective rows of the result matrix representing theplurality of replication components as supplier components and columnsof the result matrix representing the plurality of replicationcomponents as consumer components having cell values equal to zero.

These and other aspects of the invention will be set forth in part inthe description which follows and in part will become more apparent tothose skilled in the art upon examination of the following or may belearned from practice of the invention. It is intended that all suchaspects are to be included within this description, are to be within thescope of the present invention, and are to be protected by theaccompanying claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of a representation in a binary matrix forembodiments of the invention of a replication topology having threeservers in which server one replicates to server two and server tworeplicates to server three;

FIG. 2 illustrates an example of a representation in a binary matrix forembodiments of the invention of a replication topology having fourservers in which server one replicates to server two and server tworeplicates to server three;

FIG. 3 illustrates an example of a representation in a binary matrix forembodiments of the invention of another replication topology having fourservers in which server one replicates to server two and server tworeplicates to server three, which in turn replicates to server four; and

FIG. 4 is a flow chart that illustrates an overview example of theprocess of modeling a replication topology for embodiments of theinvention.

DETAILED DESCRIPTION

Reference will now be made in detail to embodiments of the invention,one or more examples of which are illustrated in the accompanyingdrawings. Each example is provided by way of explanation of theinvention, not as a limitation of the invention. It will be apparent tothose skilled in the art that various modifications and variations canbe made in the present invention without departing from the scope orspirit of the invention. For example, features illustrated or describedas part of one embodiment can be used in another embodiment to yield astill further embodiment. Thus, it is intended that the presentinvention cover such modifications and variations that come within thescope of the invention. It is to be understood the discussion herein ofservers as replication components is exemplary and is not intended tolimit the scope of the present invention and that embodiments of theinvention include any and all types of replication components andreplication component topologies.

Embodiments of the invention provide methods and systems for modeling areplication topology which can be used, for example, with any number ofservers. As previously mentioned, while it is possible to manuallyassess a server topology having a small number of servers, such as lessthan four servers, as a practical matter, it is virtually impossible tomanually assess a server topology having a large number of servers, suchas 10 to 30 or more servers. The model for embodiments of the inventionmay be used to assess server topologies of any size, but the modelbecomes increasingly useful as the number of servers increases.

In an LDAP environment with a topology that includes a large number ofservers, it may be possible to determine the potential impact of takingdown a particular server by actually taking down the server to assessthe result. However, actually taking down a server in such a topology tosee what outages may be caused is at best an ineffective way to attemptto assess the server topology, since the ultimate objective is to avoidsuch outages. It is simply not practical to attempt to manually checkwhether or not updates reach all nodes of a large server topology.

Embodiments of the invention provide a mathematical model that simulatesthe effects in a server infrastructure of taking down various servers.In an aspect, the model may be said to be analogous to simulating theeffects of turning various servers in the server infrastructure off andon. Embodiments of the invention represent this aspect as a binarymatrix depicting replication between servers from rows to columns. Inthe model for embodiments of the invention, the mathematical matrix iscreated in which a cell value of one depicts replication from a serverin a row of supplier servers to a server in a column of consumer serversthat defines the cell. Conversely, a server in the column of consumerservers receives the replication updates from a server in the row ofsupplier servers. Consequently, in such matrix the diagonal cell valuesare all one, indicating that all servers replicate to themselves. Thus,embodiments of the invention convert the server topology into a matrixwherein the same servers are illustrated in both the rows and thecolumns.

FIG. 1 illustrates an example of a representation in a binary matrix 100for embodiments of the invention of a replication topology having threeservers 102, 104, and 106. In the matrix 100 of FIG. 1, server one 102replicates to server two 104 and server two 104 replicates to serverthree 106. Referring to FIG. 1, each cell may represent a replicationagreement, depending on whether the number in the particular cell is azero, which indicates replication is not enabled or a one, whichindicates that replication is enabled, between two servers. Thedirection in which replication proceeds is always from a row 108 to acolumn 110. Thus, a server 102, 104, or 106 on the row 108 replicates toa server 102, 104, or 106 in the column 110 if the number in the cell isone. As noted above, the number in the diagonal is always one, whichmeans, in effect, that each server 102, 104, 106 in the replicationtopology replicates to itself.

Embodiments of the invention employ matrix multiplication, whichinvolves multiplying, for example, rows in one matrix by columns inanother matrix. Using the matrix multiplication employed in the modelfor embodiments of the invention, it is possible to determine whetherthere are any servers in a server topology that are not receivingupdates. Referring again to the binary matrix illustrated in FIG. 1,servers one 102, two 104 and three 106 represent three servers in theserver topology. It is to be understood that while it is possible tomanually assess server topology with such a small number of servers, themodel holds true for much larger server topologies. The smaller servertopology is used herein to illustrate the principles of embodiments ofthe present invention for simplicity's sake. Nevertheless, the modelyields identical results with much larger server topologies.

The multiplication of matrices for embodiments of the invention may beperformed in one step or may be performed aggregatively. As aspect ofembodiments of the invention provides a one step analysis for analyzingupdates from one server. The one step analysis for analyzing updatesfrom one server involves multiplying the matrix times the first row ofthe matrix or some other row of the matrix. FIG. 2 illustrates anexample of a representation in a binary matrix (M) 200 for embodimentsof the invention of a replication topology having four servers 202, 204,206, and 208. Referring to FIG. 2, server one 202 replicates to servertwo 204 and server two 204 replicates to server three 206. Referring tothe matrix (M) 200 of FIG. 2, a one-row matrix, matrix M_(lr), which isthe first row 210 of matrix (M) 200, may be created. The matrix (M) 200may then be multiplied by the one row matrix M_(lr), consisting of thefirst row 210 in matrix M, to yield the result matrix M_(Result) asfollows:

M_(Result) = M_(1r) * M $M = \begin{matrix}1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1\end{matrix}$ and $M_{1r} = \begin{matrix}1 & 1 & 0 & 0\end{matrix}$ Therefore, since${M_{Result} = {M_{1r}*M}},{M_{Result} = \begin{matrix}1 & 1 & 0 & 0 \\\; & * & \; & \; \\1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1\end{matrix}}$ ${Thus},\text{}{M_{Result} = \begin{matrix}1 & 2 & 1 & 0\end{matrix}}$

The resulting matrix M_(Result) above is a single row matrixrepresenting server one 202 with each column representing a server. If aresulting cell value is equal to zero, the server represented by thecolumn of cells is not receiving any updates when server one 202 isupdated. Ideally, this result should never occur. A resulting cell valueequal to one means that the server represented by the column of cellsreceives updates indirectly and does not receive a direct update fromserver one 202. A resulting cell value greater than one is an idealsituation in which the server represented by column of cells receivesupdates from multiple sources. If the resulting cell value is zero, itwould be necessary to investigate to see what problem may have arisendue to the particular server not receiving updates.

In the initial matrix (M), a zero in a cell means the particular serversare not directly connected. Thus, in the initial matrix (M) 100 of FIG.1, server one 102 replicates to server two 104, server two 104replicates to server three 106. Server three 106 does not replicate toany other server. In the end, server three 106 receives updates becauseserver one 102 replicates to server two 104, which replicates to serverthree 106, although server one 102 does not replicate directly to serverthree 106. This represents a depth of the server infrastructure, and thegreater the depth of the infrastructure, the greater the danger thatremoving a single server may break a link, which can cause severalservers to become orphaned.

Referring to the matrix (M) 200 for the topology illustrated in FIG. 2,the replication topology has four servers 202, 204, 206, and 208, withserver one 202 replicating to server two 204, which in turn replicatesto server three 206. Embodiments of the invention provide a one stepanalysis of updates from a single server in a topology, such as thetopology illustrated in FIG. 2. Based on the foregoing one step analysisfor updates from one server, it can be concluded that when server one202 is updated, servers two 204 and three 206 receive updates, butserver four 208 does not receive updates. When a four×four binarymatrix, such as the four×four binary matrix (M) 200 of the aboveexample, is multiplied by a one×four matrix, such as the one×four matrixof M_(lr) in the example, the result is a one×four matrix, such as theM_(Result) in the example. Thus, the significance of the final zero inthe M_(Result) of the example is that server 208 four receives noupdates at all when server one 202 is updated.

While the foregoing example, illustrates a one step analysis of anupdate from a single server, in the real world, an objective may be todetermine whether all servers in a server topology receive an updatewhen any other server is updated. An aspect of embodiments of theinvention addresses that objective by providing a one step analysis ofupdates from any server in a server topology in which the matrix (M) ismultiplied by itself. When a four×four matrix, such as the four×fourmatrix (M) of the above example, is multiplied by itself, the result isa four×four matrix. Thus, in the one step analysis of updates from anyserver in which the matrix (M) is multiplied by itself, the resultmatrix M_(Result) is a symmetric matrix of size N×N in which Nrepresents the number of rows and columns. In this aspect, each row ofM_(Result) represents the server number that receives updates and,similar to the analysis of updates from a single server, the columns ineach row indicate whether the respective server number receives theupdate. A zero in a cell indicates that the server is orphaned.

In the one step analysis of updates from any single server in thetopology of FIG. 2, for example:

$M = \begin{matrix}1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1\end{matrix}$ Therefore, since M_(Result) = M * M: $\begin{matrix}1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1 \\\; & * & \; & \; \\1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1\end{matrix}$ ${Thus},\text{}{M_{Result} = \begin{matrix}1 & 2 & 1 & 0 \\0 & 1 & 2 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1\end{matrix}}$

In embodiments of the invention, the result, M_(Result), may beinterpreted as follows:

As expected from the earlier one-row matrix example, the first row ofthe result in the one step analysis of updates from any single serveris:

1 2 1 0

This is the same as the first row in the in the foregoing analysis ofupdates from a single server. Thus, in the first row of the result, thesignificance of the final zero is that when server one 202 is updated,server four 208 receives no updates. Likewise, in the second row, thesignificance of the first and final zeros is that when server two 204 isupdated, servers one 202 and four 208 receive no updates. In addition,in the third row, the first, second and fourth zeros means that whenserver three 206 is updated, none of the servers one 202, two 204 orfour 208 receives updates. Finally, in the fourth row, the first, secondand third zeros likewise indicate that when server four 208 is updated,none of the servers one 202, two 204, or three 206 receives updates. Itis to be noted that in the first, second, third and fourth rows,respectively, the first, second, third and fourth ones simply reflectthat each of servers one, 202, two 204, three 206, and four 208replicates to itself. Thus, it can be concluded that in the particulartopology, server four 208 will never receive an update when any of anyof the other servers 202, 204, and 206 are updated, and none of otherservers will ever receive an update when server four is updated.

The foregoing one step analysis of an update from a single server orfrom any server is limited to nodes that are one level deep. Forexample, when server one 202 replicates to server two 204, which in turnreplicates to server three 206, server three 206 is considered to be onelevel deep from the update. This is true because there is one serverbetween the source of the update and the target server. In the foregoingone-step analysis of an update from a single server or from any singleserver, a server that is two levels deep from the update will be missed.However, such multistep replication is present in most larger servertopologies. Another aspect of embodiments of the invention provides amultistep, iterative analysis for updates from any server at any levelin a server topology.

Such aspect involves, for example, iterating the multiplication of theresult, M_(Result) by the matrix, M. In such an iterative process, theresult may denoted, M_(Result-I), where I represents the iterationnumber.

The multistep, iterative analysis for embodiments of the invention is asfollows:

M*M=M _(Result-1)  Iteration 1

M _(Result-1) *M=M _(Result-2)  Iteration 2

Thus, the equation for each iteration I is as follows:

M _(Result-I-1) *M=M _(Result-I)  Iteration I

Accordingly, the number of iterations required for a matrix of a sizeN×N, where N is the number of servers in the replication topology, maybe defined by:

I_(max)=N−2 where N>2 (N−2 is also the maximum possible depth in atopology)

I_(max)=0 where N<3 because a matrix of size one and two requires noanalysis since the matrix itself is the result. In such a smallinfrastructure, one can determine whether there is a problem by simplylooking at the matrix.

FIG. 3 shows an example of another binary matrix 300 for a replicationtopology with four servers 302, 304, 306, and 308, in which server one302 replicates to server two 304, server two 304 replicates to serverthree 306, which in turn replicates to server four 308. The multistep,iterative analysis for embodiments of the invention enables adetermination to be made of the servers that do not receive updates whenany of the servers are updated.

In the case of the foregoing four-server topology, the matrix (M) 300is:

$M\mspace{14mu} {equals}\text{:}\begin{matrix}1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 1 \\0 & 0 & 0 & 1\end{matrix}$ In  iteration   1:${M_{{Result} - 1} = {M*M}},{{as}\mspace{14mu} {follows}\text{:}\begin{matrix}1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 1 \\0 & 0 & 0 & 1 \\\; & * & \; & \; \\1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 1 \\0 & 0 & 0 & 1\end{matrix}}$${Thus},\text{}{M_{{Results} - 1}\mspace{14mu} {equals}\text{:}\begin{matrix}1 & 2 & 1 & 0 \\0 & 1 & 2 & 1 \\0 & 0 & 1 & 2 \\0 & 0 & 0 & 1\end{matrix}}$

It is to be noted that server four 308 does not receive any updates whenserver one 302 is updated, but since the present example is a 4×4matrix, it is necessary to go through ceiling (4−2)=2 iterations.Accordingly, M_(Result-2)=M_(Result-1)*M equals:

$\begin{matrix}1 & 2 & 1 & 0 \\0 & 1 & 2 & 1 \\0 & 0 & 1 & 2 \\0 & 0 & 0 & 1 \\\; & * & \; & \; \\1 & 1 & 0 & 0 \\0 & 1 & 1 & 0 \\0 & 0 & 1 & 1 \\0 & 0 & 0 & 1\end{matrix}$${Thus},\text{}{M_{{Results} - 2}\mspace{14mu} {equals}\text{:}\begin{matrix}1 & 3 & 3 & 1 \\0 & 1 & 3 & 3 \\0 & 0 & 1 & 3 \\0 & 0 & 0 & 1\end{matrix}}$

Based on the foregoing iteration, it should be noted that the result haschanged to reveal that server four 308 does indeed receive updates. Itmay be concluded from the foregoing computation that all servers 304,306, and 308 receive updates when server one 302 is updated; that serverone 302 will not receive updates when server two 304 is updated; thatservers one 302 and two 304 will not receive updates when server three306 is updated; and that none of servers one 302, two 304, or three 306will receive updates when server four 308 is updated.

In an ideal world, it would be simpler if depth of updates in a servertopology could be limited to one level or less for all servers. However,as a practical matter, cascading replications are generally present inreal-life server topologies. As previously noted, the number ofiterations required for a matrix of a size N×N, where N is the number ofservers in the replication topology, may be defined by I_(max)=N−2,where N is greater than two. After performing the number of iterationsrequired for a matrix of a size N×N, I_(max), if the resultant matrixM_(Imax) has no zeros in any cell, it may be concluded that the topologyis balanced in that the updates from any server will reach all nodes inthe topology. Further, if a non-zero matrix is reached at the Nthiteration before the I_(max) number of iterations, it may be concludedthat the replication topology has at least one server that has a depthof N levels. In such a scenario, the server that is last in reaching anon-zero value in its column may be considered to be the weakest link.

FIG. 4 is a flow chart that illustrates an overview example of theprocess of modeling a replication topology for embodiments of theinvention. Referring to FIG. 4, at S1, using a processor coupled tomemory, a plurality of replication components of a replication topologyare represented in a first binary matrix. At S2, likewise using theprocessor, a result matrix is generated based at least in part on thefirst binary matrix. At S3, also using the processor, replicationcomponents of the replication topology are identified that are enabledto receive replications from other replication components of thereplication topology based at least in part on the result matrix.

The foregoing analysis may be used as a tool for both designing andmonitoring a replication topology. Embodiments of the invention providea way to determine, for example, the weakest link or links in a serverinfrastructure and whether or not there is a potential problem in theparticular server infrastructure. In a real-time scenario, for example,embodiments of the invention may be used to predict what will happen ifa particular server is taken down. Thus, embodiments of the inventionenable a warning notice to be given to the appropriate personnel of theconsequences of taking down the particular server.

in addition, as previously noted, the analyses for embodiments of theinvention may have applications in other fields in which replication orreplication type phenomenon exists. For example, a social networkingsite may involve a network of friends who post items from time to timewhich may be replicated to other friends. For another example,communicable diseases may likewise be replicated from one organism, suchas an infected person, to another as a result of physical or some othertype of contact.

It is to be understood that embodiments of the invention may beimplemented as processes of a computer program product, each process ofwhich is operable on one or more processors either alone on a singlephysical platform, such as a personal computer, or across a plurality ofplatforms, such as a system or network, including networks such as theInternet, an intranet, a WAN, a LAN, a cellular network, or any othersuitable network. Embodiments of the invention may employ client devicesthat may each comprise a computer-readable medium, including but notlimited to, random access memory (RAM) coupled to a processor. Theprocessor may execute computer-executable program instructions stored inmemory. Such processors may include, but are not limited to, amicroprocessor, an application specific integrated circuit (ASIC), andor state machines. Such processors may comprise, or may be incommunication with, media, such as computer-readable media, which storesinstructions that, when executed by the processor, cause the processorto perform one or more of the steps described herein.

It is also to be understood that such computer-readable media mayinclude, but are not limited to, electronic, optical, magnetic, RFID, orother storage or transmission device capable of providing a processorwith computer-readable instructions. Other examples of suitable mediainclude, but are not limited to, CD-ROM, DVD, magnetic disk, memorychip, ROM, RAM, ASIC, a configured processor, optical media, magneticmedia, or any other suitable medium from which a computer processor canread instructions. Embodiments of the invention may employ other formsof such computer-readable media to transmit or carry instructions to acomputer, including a router, private or public network, or othertransmission device or channel, both wired or wireless. Suchinstructions may comprise code from any suitable computer programminglanguage including, without limitation, C, C++, C#, Visual Basic, Java,Python, Perl, and JavaScript.

It is to be further understood that client devices that may be employedby embodiments of the invention may also comprise a number of externalor internal devices, such as a mouse, a CD-ROM, DVD, keyboard, display,or other input or output devices. In general such client devices may beany suitable type of processor-based platform that is connected to anetwork and that interacts with one or more application programs and mayoperate on any suitable operating system. Server devices may also becoupled to the network and, similarly to client devices, such serverdevices may comprise a processor coupled to a computer-readable medium,such as a random access memory (RAM). Such server devices, which may bea single computer system, may also be implemented as a network ofcomputer processors. Examples of such server devices are servers,mainframe computers, networked computers, a processor-based device, andsimilar types of systems and devices.

What is claimed is:
 1. A method of modeling a replication topology,comprising: representing, using a processor coupled to memory, aplurality of replication components of a replication topology in a firstbinary matrix; generating, using the processor, a result matrix based atleast in part on the first binary matrix; and identifying, using theprocessor, replication components of the replication topology that areenabled to receive replications from other replication components of thereplication topology based at least in part on the result matrix.
 2. Themethod of claim 1, wherein representing the plurality of replicationcomponents further comprises representing the plurality of replicationcomponents as both supplier components and consumer components in thefirst binary matrix.
 3. The method of claim 2, wherein representing theplurality of replication components as both supplier and consumercomponents further comprises representing the plurality of replicationcomponents as supplier components in rows of the first binary matrix andas consumer components in columns of the first binary matrix.
 4. Themethod of claim 3, wherein the first binary matrix further comprises aplurality of cells defined by the respective rows and columns of thefirst binary matrix, and wherein a cell value equal to one represents aconnection between a supplier component in a row and a consumercomponent in a column that together define the cell.
 5. The method ofclaim 1, wherein representing the plurality of replication componentsfurther comprises representing the plurality of replication componentsof a replication topology in the first binary matrix of a size N×N,where N is the number of replication components in the replicationtopology.
 6. The method of claim 1, wherein the plurality of replicationcomponents further comprises a plurality of servers of a serverinfrastructure.
 7. The method of claim 6, wherein the plurality ofservers further comprises a plurality of servers of a LightweightDirectory Access Protocol (LDAP) infrastructure.
 8. The method of claim1, wherein generating the result matrix further comprises generating theresult matrix as a product of the first binary matrix and a one-rowbinary matrix representing one of the plurality of replicationcomponents of the replication topology as a supplier component.
 9. Themethod of claim 8, wherein generating the result matrix furthercomprises generating the result matrix according to an equation:M_(Result)=M*M_(Row), where M_(Result) is the result matrix, M is thefirst binary matrix, and M_(Row) is the one-row binary matrixrepresenting one of the plurality of replication components.
 10. Themethod of claim 9, wherein the result matrix comprises a one-row resultmatrix.
 11. The method of claim 1, wherein generating the result matrixfurther comprises generating the result matrix as a product of the firstbinary matrix multiplied by itself.
 12. The method of claim 11, whereingenerating the result matrix further comprises generating the resultmatrix according to an equation: M_(Result)=M*M, where M_(Result) is theresult matrix and M is the first binary matrix.
 13. The method of claim12, wherein the first binary matrix comprises a binary matrix of sizeN×N, where N is a number of replication components in the replicationtopology, and the result matrix is likewise a matrix of size N×N. 14.The method of claim 1, wherein generating the result matrix furthercomprises generating the result matrix by multiplying the first binarymatrix by itself and iteratively multiplying the first binary matrix byan outcome matrix and by each of a plurality of succeeding outcomebinary matrices for a pre-determined number of iterations.
 15. Themethod of claim 14, wherein the result matrix comprises a matrix of sizeN×N, where N is a number of replication components in the replicationtopology.
 16. The method of claim 15, wherein generating the resultmatrix further comprises iteratively multiplying the first binary matrixby the outcome matrix and by each of the plurality of succeeding outcomebinary matrices for a pre-determined number of iterations equal to Nminus two iterations.
 17. The method of claim 1, wherein identifyingreplication components of the replication topology that are enabled toreceive replications from other replication components further comprisesidentifying cells defined by respective rows of the result matrixrepresenting the plurality of replication components as suppliercomponents and columns of the result matrix representing the pluralityof replication components as consumer components having cell valuesequal to one.
 18. The method of claim 17, further comprising identifyingreplication components of the replication topology that are non-enabledto receive replications from other replication components as cellsdefined by respective rows of the result matrix representing theplurality of replication components as supplier components and columnsof the result matrix representing the plurality of replicationcomponents as consumer components having cell values equal to zero. 19.A system for modeling a replication technology, comprising: a processorcoupled to memory, wherein the processor is programmed for: representinga plurality of replication components of a replication topology in afirst binary matrix; generating a result matrix based at least in parton the first binary matrix; and identifying replication components ofthe replication topology that are enabled to receive replications fromother replication components of the replication topology based at leastin part on the result matrix.